// https://leetcode.cn/problems/univalued-binary-tree/
/*
如果二叉树每个节点都具有相同的值，那么该二叉树就是单值二叉树。

只有给定的树是单值二叉树时，才返回 true；否则返回 false。
*/

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode() : val(0), left(nullptr), right(nullptr) {}
    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};

class Solution {
public:
    bool isUnivalTree(TreeNode* root) {
		int val = root->val;
		bool flag = true;
		show(root, val, flag);
		return flag;
    }
	
	void show(TreeNode* root, int val, bool & flag){
		if(root){
			show(root->left, val, flag);
			if(root->val != val){
				flag = false;
				return;
			}
			show(root->right, val, flag);
		}
	}
};

int main(){
	
	return 0;
}